<?php
include_once("Conexion.php");

//Declaracion
class M_Ingrediente{
    //Variable de la clase
    private $id_Ingrediente;
    private $nombre;
    private $imagen;        
    private $creadopor;    
    private $actualizadopor;        
    private $stockmin;
    private $um_entrada;
    private $um_salida;
    private $conversion;
    private $stock_ideal;
    private $precioxunidad;
    private $precio_compra;
    
    //Metodo utilizado para obtener todos los Roles
    function searchIngrediente_All() {
        //Le deciamos que la locacion es lenguaje español
        setlocale(LC_CTYPE, 'es');
        //La sentencia a ejecutar
        $sql = " SELECT * FROM tbl_ingrediente where eliminado = false ";
        try {
            //Creamos un objeto de la clase conexion
            $miconexion = new Conexion();
            //Obtenemos la conexion
            $cn = $miconexion->conectar();
            //Ejecutamos la sentencia
            $rs = pg_query($cn,$sql);
            //Creamos un array que almacenara los datos de la sentencia
            $registros = array();
            //Recorremos el resultado de la consulta y lo almacenamos en el array
            while ($reg = pg_fetch_array($rs)) {
                array_push($registros, $reg);
            }
            //Liberamos recursos
            pg_free_result($rs);
            pg_close($cn);
        } catch (exception $e) {
            try {
                pg_free_result($rs);
            } catch (exception $e) {

            }
            try {
                pg_close($cn);
            } catch (exception $e) {

            }
        }
        return $registros;
    }
    
    //Metodo utilizado para obtener todos los Roles
    function searchIngrediente_Uno() {
        //Le deciamos que la locacion es lenguaje español
        setlocale(LC_CTYPE, 'es');
        //La sentencia a ejecutar
        $sql = " SELECT * FROM tbl_ingrediente where id_ingrediente = $this->id_Ingrediente and eliminado = false ";
        try {
            //Creamos un objeto de la clase conexion
            $miconexion = new Conexion();
            //Obtenemos la conexion
            $cn = $miconexion->conectar();
            //Ejecutamos la sentencia
            $rs = pg_query($cn,$sql);
            //Creamos un array que almacenara los datos de la sentencia
            $registros = array();
            //Recorremos el resultado de la consulta y lo almacenamos en el array
            while ($reg = pg_fetch_array($rs)) {
                array_push($registros, $reg);
            }
            //Liberamos recursos
            pg_free_result($rs);
            pg_close($cn);
        } catch (exception $e) {
            try {
                pg_free_result($rs);
            } catch (exception $e) {

            }
            try {
                pg_close($cn);
            } catch (exception $e) {

            }
        }
        return $registros;
    }
    
    //V_StockIngredientes
    function searchStockIngrediente_All() {
        //Le deciamos que la locacion es lenguaje español
        setlocale(LC_CTYPE, 'es');
        //La sentencia a ejecutar
        $sql = " SELECT i.id_ingrediente, i.nombre, s.stock, i.stock_minimo, i.stock_ideal, i.precio_compra, um.abreviatura as entrada
        FROM tbl_ingrediente i
        inner join tbl_stock s on i.id_ingrediente = s.id_ingrediente
        INNER JOIN tbl_unidad_medida as um ON um.id_unidad_medida = i.id_um_entrada
        where i.eliminado = false ";
        try {
            //Creamos un objeto de la clase conexion
            $miconexion = new Conexion();
            //Obtenemos la conexion
            $cn = $miconexion->conectar();
            //Ejecutamos la sentencia
            $rs = pg_query($cn,$sql);
            //Creamos un array que almacenara los datos de la sentencia
            $registros = array();
            //Recorremos el resultado de la consulta y lo almacenamos en el array
            while ($reg = pg_fetch_array($rs)) {
                array_push($registros, $reg);
            }
            //Liberamos recursos
            pg_free_result($rs);
            pg_close($cn);
        } catch (exception $e) {
            try {
                pg_free_result($rs);
            } catch (exception $e) {

            }
            try {
                pg_close($cn);
            } catch (exception $e) {

            }
        }
        return $registros;
    }
    
    function obtCodigoSiguiente(){
            //Creamos un objeto de la clase conexion
            $rpta = 0;
            $miconexion = new Conexion();
            //Obtenemos la conexion
            $cn = $miconexion->conectar();
            
            $sql = "SELECT MAX(id_ingrediente)+1 as codigo FROM tbl_ingrediente";
            
            $result = pg_query($cn,$sql);
            $registros = array();
            while ($registros =  pg_fetch_array($result)) {
                $rpta = $registros['codigo'];
            }            
            return $rpta;        
    }
    
    //Metodo utilizado para insertar una Rol en la base de datos
    function insertIngrediente() {
       
      
            //Creamos un objeto de la clase conexion
            $miconexion = new Conexion();
            //Obtenemos la conexion
            $cn = $miconexion->conectar();
            $id = $this->obtCodigoSiguiente();            
            if(!$id){$id=1;}
            //Comenzamos la transaccion
          //  pg_query($cn,"BEGIN");
            //Elaboramos la sentencia
            $sql = "insert into tbl_ingrediente(id_ingrediente, 
                id_um_entrada, stock_minimo, stock_ideal, precio_compra, precioxunidad, id_um_salida, conversion, nombre, creadopor, creacion, estado,  eliminado) 
                values ($id, $this->um_entrada, $this->stockmin, $this->stock_ideal, 0, 0, $this->um_salida, $this->conversion,'$this->nombre', '$this->creadopor', now(), true, false)";
            //Ejecutamos la sentencia
            $result = pg_query($cn,$sql);
            if (!$result) {
                //Si no obtiene resultados anulamos la transaccion
              //  pg_query($cn,"ROLLBACK");
                $rpta = false;
            } else {
                //Si obtiene resultados confirmamos la transaccion
                pg_query($cn,"COMMIT");
                $SQL2 = "INSERT INTO tbl_stock(id_ingrediente, stock, stock_minimo)VALUES ($id, 0, $this->stockmin);";
                $result2 = pg_query($cn,$SQL2);
                if($result2){$rpta = true;}
                else{$rpta = FALSE;}                
            }
            //Cerramos la conexion
            pg_close($cn);
        
        return $rpta;
    }
    
    //Metodo utilizado para actualizar un ROL
    function updateIngrediente() {

            //Creamos un objeto de la clase conexion
            $miconexion = new Conexion();
            //Obtenemos la conexion
            $cn = $miconexion->conectar();
            //Comenzamos la transaccion
            //mysql_query("BEGIN", $cn);
            //Elaboramos la sentencia
            $sql = " update tbl_ingrediente set 
                nombre = '$this->nombre', 
                imagen = '$this->imagen', 
                actualizadopor = '$this->actualizadopor', 
                actualizado = now(),
                id_um_entrada = $this->um_entrada,
                id_um_salida = $this->um_salida,
                conversion = $this->conversion,
                stock_minimo = $this->stockmin                
                where id_ingrediente = $this->id_Ingrediente";
            //Ejecutamos la sentencia
            $result = pg_query($cn,$sql);
           
            if (!$result) {
                //Si no obtiene resultados anulamos la transaccion
            //    mysql_query("ROLLBACK", $cn);
                $rpta = false;
            } else {
                //Si obtiene resultados confirmamos la transaccion
              //  mysql_query("COMMIT", $cn);
                $rpta = true;
            }
            //Cerramos la conexion
            pg_close($cn);
        
        
        return $rpta;
    }
    //metodo utilizado para eliminar un rol
     function deleteIngrediente() {

            //Creamos un objeto de la clase conexion
            $miconexion = new Conexion();
            //Obtenemos la conexion
            $cn = $miconexion->conectar();
            //Comenzamos la transaccion
            //mysql_query("BEGIN", $cn);
            //Elaboramos la sentencia
           $sql = " update tbl_ingrediente set eliminado = true  where id_ingrediente = $this->id_Ingrediente";
          
            //Ejecutamos la sentencia
            $result = pg_query($cn,$sql);
           
            if (!$result) {
                //Si no obtiene resultados anulamos la transaccion
            //    mysql_query("ROLLBACK", $cn);
                $rpta = false;
            } else {
                //Si obtiene resultados confirmamos la transaccion
              //  mysql_query("COMMIT", $cn);
                $rpta = true;
            }
            //Cerramos la conexion
            pg_close($cn);
        
        
        return $rpta;
    }
    
    //Get y Set de la clase
    function getId_Ingrediente() {
        return $this->id_Ingrediente;
    }
    
    function getNombre() {
        return $this->nombre;
    }

    function getImagen() {
        return $this->imagen;
    }
    
    function getCreadoPor() {
        return $this->creadopor;
    }
    
    function getActualizadoPor() {
        return $this->actualizadopor;
    }
    
    function getStockMin() {
        return $this->stockmin;
    }
    
    function getUmEntrada() {
        return $this->um_entrada;
    }
    function getUmSalida() {
        return $this->um_salida;
    }
    function getConversion() {
        return $this->um_conversion;
    }
    
    function getStockIdeal() {
        return $this->um_conversion;
    }
    
    function getPrecioUnidad() {
        return $this->precioxunidad;
    }
    
    function getPrecioCompra() {
        return $this->precio_compra;
    }
    

    function setIngrediente($var) {
        $this->id_Ingrediente = $var;
    }
    
    function setNombre($var) {
        $this->nombre = $var;
    }

    function setImagen($var) {
        $this->imagen = $var;
    }
    
    function setCreadoPor($var) {
        $this->creadopor = $var;
    }
    
    function setActualizadoPor($var) {
        $this->actualizadopor = $var;
    }
    
    function setStockMin($var) {
        $this->stockmin = $var;
    }
    
    function setUmEntrada($var) {
        $this->um_entrada = $var;
    }
    function setUmSalida($var) {
        $this->um_salida = $var;
    }
    function setConversion($var) {
        $this->conversion = $var;
    }
    function setStockIdeal($var) {
        $this->stock_ideal = $var;
    }
    
    function setPrecioxUnidad($var) {
        $this->precioxunidad = $var;
    }
    
    function setPrecioCompra($var) {
        $this->precio_compra = $var;
    }       
}
?>